package com.ruoyi.system.mapper.fx;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.domain.dto.GoodInventoryDto;
import com.ruoyi.system.domain.fx.FxSupplierGood;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * 供应商商品Mapper接口
 *
 * @author ruoyi
 * @date 2024-07-23
 */
public interface FxSupplierGoodMapper extends BaseMapper<FxSupplierGood> {
    /**
     * 查询供应商商品
     *
     * @param id 供应商商品主键
     * @return 供应商商品
     */
    public FxSupplierGood selectFxSupplierGoodById(Long id);

    /**
     * 查询供应商商品列表
     *
     * @param fxSupplierGood 供应商商品
     * @return 供应商商品集合
     */
    public List<FxSupplierGood> selectFxSupplierGoodList(FxSupplierGood fxSupplierGood);


    public List<FxSupplierGood>  selectFxStoreSupplierGoodList(FxSupplierGood fxSupplierGood);


    public List<FxSupplierGood>  selectFxSupplierSonGoodList(FxSupplierGood fxSupplierGood);

    /**
     * 以商品id 查询供应商商品列表
     * @param goodIds
     * @return
     */
    List<FxSupplierGood> selectFxSupplierGoodListByGoodIds(List<Long> goodIds);

    /**
     * 以名称查询
     * @param goodName
     * @return
     */
    FxSupplierGood selectSupplierByGoodName(@Param("goodName") String goodName, @Param("supplierId") Long supplierId);

    /**
     * 根据名称和 店铺id
     * @param goodName
     * @param storeId
     * @return
     */
    FxSupplierGood selectSupplierByGoodNameAndStoreId(@Param("goodName") String goodName, @Param("storeId") Long storeId,@Param("parentId") Long parentId);


    /**
     * 新增供应商商品
     *
     * @param fxSupplierGood 供应商商品
     * @return 结果
     */
    public int insertFxSupplierGood(FxSupplierGood fxSupplierGood);

    /**
     * 修改供应商商品
     *
     * @param fxSupplierGood 供应商商品
     * @return 结果
     */
    public int updateFxSupplierGood(FxSupplierGood fxSupplierGood);

    /**
     * 修改商品库存
     * @param goodInventoryDto
     * @return
     */
    int updateGoodInventory(GoodInventoryDto goodInventoryDto);

    /**
     * 批量修改供应商商品删除状态
     * @param ids
     * @return
     */
    int updateStatusByIds(@Param("ids") Long[] ids , @Param("delFlag") Integer delFlag , @Param("isInitiate") Integer isInitiate);

    /**
     * 删除供应商商品
     *
     * @param id 供应商商品主键
     * @return 结果
     */
    public int deleteFxSupplierGoodById(Long id);

    /**
     * 批量删除供应商商品
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteFxSupplierGoodByIds(Long[] ids);



    List<String> selectAllOne(@Param("goodNames") List<String> goodNames,@Param("storeId") Long storeId);


    int saveBath(@Param("fxSupplierGoods") List<FxSupplierGood> fxSupplierGoods);

    List<String> selectlistByGoodName(@Param("sonNames") Set<String> sonNames,@Param("storeId") Long storeId);

    FxSupplierGood selectFxSupplierGoodByName(@Param("goodName")String goodName,@Param("storeId") int storeId,@Param("id") Long id);
}
